//
const store = {
    state: {
        num: 20,
    },
    // 只放同步的方法
    actions: {
        add1(newState: { num: number }, action: { type: string }) {
            newState.num++;
        },
        add2(
            newState: { num: number },
            action: { type: string; value: number }
        ) {
            newState.num += action.value;
        },
    },
    // 只放异步方法（模仿vuex写法
    asyncActions: {
        asyncAdd1(dispatch: Function) {
            setTimeout(() => {
                dispatch({ type: "add2", value: "666" });
            }, 1000);
        },
    },
    // 名字统一管理
    // actionNames: {
    //     add1: "add1",
    //     add2: "add2",
    // },
    actionNames: {},
};

let actionNames = {};
// 将action中的key赋值给actionNames
for (let key in store.actions) {
    actionNames[key] = key;
}
store.actionNames = actionNames;
export default store;
